/**
 * author:vesper.z
 * date: 2024  13:51
 * class: Test07
 * description：接口
 **/
class Test07 {

}

interface MyInterface {
    var title: String//name 属性, 抽象的
    fun f1() //未实现方法
    fun f2() {//已实现方法
        println("f2")
    }
}

/**
 * 实现接口
 */
class MyInterfaceImp() : MyInterface {
    override var title: String = ""
        //重写属性
        get() = field
        set(value) {
            field = value
        }

    override fun f1() {
        println("MyInterfaceImp f1")
    }

    override fun f2() {
        println("MyInterfaceImp f2")
    }

}

/**
 * 函数重写
 * 实现多个接口时，可能会遇到同一方法继承多个实现的问题。例如:
 */
interface A {
    fun f1(){
        println("A f1")
    }
    fun f2(){
        println("A f2")
    }
}

interface B {
    fun f1(){
        println("B f1")
    }
    fun f2()
}

class C : A, B {
    override fun f1() {
       super<A>.f1()
       super<B>.f1()

    }
    override fun f2() {
       super<A>.f2()
    }



}

fun main(args: Array<String>) {
    var myInterfaceImp = MyInterfaceImp()
    myInterfaceImp.f1()
    myInterfaceImp.f2()
    myInterfaceImp.title = "123123"
}